package cn.founder.org.service.impl;

import cn.founder.basic.exception.BusinessException;
import cn.founder.basic.service.impl.BaseServiceImpl;
import cn.founder.org.domain.Employee;
import cn.founder.org.domain.Shop;
import cn.founder.org.mapper.EmployeeMapper;
import cn.founder.org.mapper.ShopMapper;
import cn.founder.org.service.IShopService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

@Service
public class ShopServiceImpl extends BaseServiceImpl<Shop> implements IShopService {

    @Autowired
    private ShopMapper shopMapper;

    @Autowired
    private EmployeeMapper employeeMapper;

    //独特的实现需要自己单独写
    @Override
    public void settlement(Shop shop) {
        //1.店铺名不能为空
        if(!StringUtils.hasLength(shop.getName())){
            throw new BusinessException("店铺名不能为空！");
        }

        //2.用户是否重复入驻  -username(前端店铺管理员字段)  验证3个字段  邮箱 电话 用户名
          //2.1获取shop对象中的 admin对象   内含有店长名（店铺管理员）
        Employee admin = shop.getAdmin();
        String username = admin.getUsername();//前端传来的管理员名字
        Employee employee =employeeMapper.loadByUsername(username);//通过后端查询电偶管理员名字
        //假如管理员名字存在 就不能注册
        if(employee != null){
            throw new BusinessException("店铺已经注册，请直接登录，如忘记密码，请使用找回密码登录！");
        }

        //3.保存数据 -先保存店长  再保存店铺信息
        employeeMapper.save(admin);//数据库写入了管理员信息
            //这里重新设置回去 因为前面保存后就有了id  不再是原来的admin对象了
        shop.setAdmin(admin);//这里 店铺信息对象将 店长信息重新设置回来
        shopMapper.save(shop); //将店铺信息写入数据库

        //4.修改Employee中的Shop_id
        admin.setShop_id(shop.getId());//店铺写入数据库后就会有id   需要将employee库中对应的店铺id 更新
        employeeMapper.save(admin);
    }
}
